package com.javaweb.web.service;

import java.util.List;

import com.javaweb.base.po.Module;
import com.javaweb.base.po.Role;
import com.javaweb.base.po.User;
import com.javaweb.util.entity.Page;
import com.javaweb.web.eo.module.ModuleAddRequest;
import com.javaweb.web.eo.module.ModuleIdAndNameResponse;
import com.javaweb.web.eo.module.ModuleListRequest;
import com.javaweb.web.eo.module.ModuleModifyRequest;

/**
 * 模块模块业务层接口
 * 
 * @author tank2140896
 */
public interface ModuleService {
    
	/**
	 * 获取模块ID和模块名称列表业务层接口
	 * 
	 * @param moduleType 模块类型
	 * @return List<ModuleIdAndNameResponse> 模块ID和名称信息列表
	 */
    List<ModuleIdAndNameResponse> getModuleIdAndNameList(String moduleType);
	
	/**
	 * 根据用户ID获取所有模块业务层接口
	 * 
	 * @param userId 用户ID
	 * @param platformName 平台名称
	 * @return List<Module> 模块信息列表
	 */
	List<Module> getModule(String userId,String platformName);
	
	/**
	 * 模块列表业务层接口
	 * 
	 * @param moduleListRequest 模块列表请求参数
	 * @return Page 分页参数
	 */
	Page moduleList(ModuleListRequest moduleListRequest);
	
	/**
	 * 模块删除业务层接口
	 * 
	 * @param String[] 模块ID列表
	 */
	void moduleDelete(String[] moduleIds);
	
	/**
	 * 模块新增业务层接口
	 * 
	 * @param user 用户信息
	 * @param moduleAddRequest 模块新增请求参数
	 */
	void moduleAdd(User user,ModuleAddRequest moduleAddRequest);
	
	/**
	 * 模块修改业务层接口
	 * 
	 * @param user 用户信息
	 * @param moduleModifyRequest 模块修改请求参数
	 */
	void moduleModify(User user,ModuleModifyRequest moduleModifyRequest);
	
	/**
	 * 模块详情业务层接口
	 * 
	 * @param moduleId 模块ID
	 * @return Module 模块信息
	 */
	Module moduleDetail(String moduleId);
	
	/**
	 * 根据模块ID获取所有角色信息列表业务层接口
	 * 
	 * @param moduleId 模块ID
	 * @return List<Role> 角色信息列表
	 */
	List<Role> getAllRoleByModuleId(String moduleId);
	
	/**
	 * 根据模块ID获取所有用户信息列表业务层接口
	 * 
	 * @param moduleId 模块ID
	 * @return List<User> 用户信息列表
	 */
	List<User> getAllUserByModuleId(String moduleId);
	
	/**
	 * 根据上级模块ID获取所有模块信息列表业务层接口
	 * 
	 * @param parentId 上级模块ID
	 * @return List<Module> 模块信息列表
	 */
	List<Module> getModuleByParentId(String parentId);

}
